Social networking has become one of the dominant ways people gather information and communicate. As the popularity of social networking has grown, social networking sites have attracted billions of users.
The information generated by or for these users cannot be efficiently stored by a single computing device, and as the number of users grows, this information can become spread across thousands of servers. This distribution of information, known as “fan-out,” can cause a single query such as “which users performed action X,” to be executed by each of the thousands of servers, even though only some of these servers house a part of the requested data. Because of this query distribution, various latencies can be experienced.
Furthermore, for any given page within a social networking site, multiple queries can be executed requiring sophisticated server software to search through vast stores of data to gather information relating to hundreds or even thousands of users. At any given time, millions of these page requests can occur contemporaneously, e.g., when users visit web pages, or “timelines” of their friends or other users.
Despite this complexity, the transition from one web page (“page”) to another within a social networking website appears simple to end users, and unless this page retrieval process occurs with no perceptible delays, users may lose patience and simply navigate to a different website.